# 一、数字类型
# 1. 整数（int）
age = 25  # 年龄（整数类型，用于计数）
temperature = -5  # 温度（负整数，用于表示零下温度）
large_num = 12345678901234567890  # 超大整数（Python支持任意大小整数，可用于ID编号）

# 2. 浮点数（float）
height = 1.75  # 身高（米，带小数的数值）
price = 99.9  # 商品价格（元，精确到小数点后一位）
scientific = 2.5e3  # 科学计数法表示（等价于2500.0，用于大数值简化）

# 3. 复数（complex）
circuit_impedance = 3 + 4j  # 电路阻抗（实部3，虚部4，用于工程计算）
signal = 2.5 - 1j  # 信号参数（带小数的复数）

# 4. 布尔值（bool）
is_student = True  # 是否为学生（逻辑真）
has_pass_exam = False  # 是否通过考试（逻辑假）


# 二、组合数据类型
# 1. 列表（list）- 有序、可变
fruits = ["apple", "banana", "orange"]  # 水果列表（可动态修改）
scores = [90, 85, 95.5, True]  # 混合类型列表（成绩和是否及格的状态）
fruits.append("grape")  # 列表添加元素（体现可变性）

# 2. 元组（tuple）- 有序、不可变
coordinate = (10, 20)  # 二维坐标（x=10, y=20，值固定不变）
birthday = (2000, 5, 18)  # 生日（年、月、日，不可修改的日期）
single_element_tuple = (5,)  # 单个元素的元组（必须加逗号，否则视为普通括号）

# 3. 字典（dict）- 键值对、可变
user_info = {
    "name": "张三",  # 姓名（键为字符串，值为姓名）
    "age": 22,       # 年龄（键为字符串，值为整数）
    "is_student": True  # 是否学生（键为字符串，值为布尔值）
}
user_info["age"] = 23  # 修改字典中的值（体现可变性）

# 4. 集合（set）- 无序、去重
unique_numbers = {1, 2, 3, 3, 4}  # 自动去重，实际存储{1,2,3,4}
unique_fruits = set(["苹果", "香蕉", "苹果"])  # 从列表创建集合并去重
set_a = {1, 2, 3}
set_b = {2, 3, 4}
intersection = set_a & set_b  # 计算两个集合的交集（{2,3}）


# 打印所有变量及类型，验证运行结果
print("===== 数字类型示例 =====")
print(f"整数age: {age}, 类型: {type(age)}")
print(f"浮点数height: {height}, 类型: {type(height)}")
print(f"复数circuit_impedance: {circuit_impedance}, 类型: {type(circuit_impedance)}")
print(f"布尔值is_student: {is_student}, 类型: {type(is_student)}")

print("\n===== 组合数据类型示例 =====")
print(f"列表fruits: {fruits}, 类型: {type(fruits)}")
print(f"元组coordinate: {coordinate}, 类型: {type(coordinate)}")
print(f"字典user_info: {user_info}, 类型: {type(user_info)}")
print(f"集合unique_numbers: {unique_numbers}, 类型: {type(unique_numbers)}")
print(f"集合交集: {intersection}")